iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
Python

讓Python不拍勝-實用套件實作與介紹系列 第 15

[DAY15]使用Python進行資料處理-Pandas(七)

  • 分享至 

  • xImage
  •  

上一篇介紹了 Series 物件的各種運算函數,今天來示範如何在 DataFrame 運算以及更多應用!

在 DataFrame 物件上做運算

先建立兩個 DataFrame 物件

dict_1 = {'guitar': [10, 20, 30], 'bass': [40, 50, 60], 'keyboard': [70, 80, 90], 'violin': [100, 110, 120]}
dict_2 = {'guitar': [10, 10, 10], 'bass': [10, 10, 10], 'keyboard': [10, 10, 10]}
instrument_1 = pd.DataFrame(dict_1, index=['A', 'B', 'C'])
instrument_2 = pd.DataFrame(dict_2, index=['A', 'B', 'C'])
print(instrument_1)
print(instrument_2)

輸出結果

   guitar  bass  keyboard  violin
A      10    40        70     100
B      20    50        80     110
C      30    60        90     120
   guitar  bass  keyboard
A      10    10        10
B      10    10        10
C      10    10        10

使用 .add() 相加

  • 在這個例子可以看到有跟 Series 一樣的情況,instrument_2 是沒有 violin 這一欄的,所以在相加時,violin 這一欄的值就會回傳 NaN,這時我們一樣在後面指定 fill_value=n,就會在 instrument_2 自動補上 violin 這一欄,值為 n 去做相加。
print('#1')
print(instrument_1.add(instrument_2))
print('\n#2')
print(instrument_1.add(instrument_2, fill_value=10))

輸出結果

#1
   bass  guitar  keyboard  violin
A    50      20        80     NaN
B    60      30        90     NaN
C    70      40       100     NaN

#2
   bass  guitar  keyboard  violin
A    50      20        80   110.0
B    60      30        90   120.0
C    70      40       100   130.0

使用 .sub() 相減

print(instrument_1.sub(instrument_2, fill_value=10))

輸出結果

   bass  guitar  keyboard  violin
A    30       0        60    90.0
B    40      10        70   100.0
C    50      20        80   110.0

使用 .mul() 相乘

print(instrument_1.mul(instrument_2, fill_value=10))

輸出結果

   bass  guitar  keyboard  violin
A   400     100       700  1000.0
B   500     200       800  1100.0
C   600     300       900  1200.0

使用 .div() 相除

print(instrument_1.div(instrument_2, fill_value=10))

輸出結果

   bass  guitar  keyboard  violin
A   4.0     1.0       7.0    10.0
B   5.0     2.0       8.0    11.0
C   6.0     3.0       9.0    12.0

排序函數 .sort_index() 和 .sort_values() 的示範

.sort_index() 是依照索引進行排序,而 .sort_values() 就如同字面上的意思是依照值進行排序,但 Series 和 DataFrame 的用法有些微不同,我們先來看一下 Series 如何使用

Series 的示範

建立 Series 物件

data = pd.Series([10, 30, 20, 40], index=['a', 'b', 'c', 'd'])
print(data)

輸出結果

a    10
b    30
c    20
d    40
dtype: int64

.sort_index() 的示範
可以看到下面這兩個輸出結果,一個是升冪排序,一個是降冪排序,透過 ascending 的參數來決定,預設為 升冪(True)

print('#1')
print(data.sort_index())
print('\n#2')
print(data.sort_index(ascending=False))

輸出結果

#1
a    10
b    30
c    20
d    40
dtype: int64

#2
d    40
c    20
b    30
a    10
dtype: int64

.sort_values() 的示範
跟上面一樣,可以指定升冪或降冪排序,只是變成依照值來做排序

print('#1')
print(data.sort_values())
print('\n#2')
print(data.sort_values(ascending=False))

輸出結果

#1
a    10
c    20
b    30
d    40
dtype: int64

#2
d    40
b    30
c    20
a    10
dtype: int64

下一篇繼續介紹 DataFrame 的排序函數用法及更多應用!


上一篇
[DAY14]使用Python進行資料處理-Pandas(六)
下一篇
[DAY16]使用Python進行資料處理-Pandas(八)
系列文
讓Python不拍勝-實用套件實作與介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言